/*
 *  Level.h
 *  GLRender
 *
 *  Created by Teseo on 20.05.10.
 *  Copyright 2010 __MyCompanyName__. All rights reserved.
 *
 */

#ifndef LEVEL_H
#define LEVEL_H

#include "Base.h"
#include "WTarget.h"

class World;

class Level{
private:
	Point3d min, max, startPosition;
	double timeElapsed, timeNextRespawn, respawnStep;
	unsigned int minNumberOfEnemies, maxNumberOfEnemies, number;
	World *world;
	WTarget *objective;
	
	static Level *getLevel(int number, World *w)
	{
		return new Level(w);
	};

public:
	Level(World *world);
	~Level(){}
	
	
	static Level *getFirstLevel(World *w){
		return new Level(w);
	}
	
	virtual void step(const double tau, Point3d playerPosition);
	
	Level *nextLevel();
	
	inline const Point3d getMin() const {return min;}
	inline const Point3d getMax() const {return max;}
	inline WTarget *getObjective() const {return objective;}
	inline Point3d getStartPosition() const {return startPosition;}
};

#endif
